home *** CD-ROM | disk | FTP | other *** search
/ The Utilities Experience / The Utilities Experience - Volume 1.iso / software / icons+tools / iconian / sources / emodules / mod / lists.e < prev    next >
Text File  |  1995-12-22  |  1KB  |  46 lines

  1. OPT MODULE
  2.  
  3. MODULE    'exec/nodes','exec/lists'
  4.  
  5. EXPORT PROC isfirst(node:PTR TO ln)
  6.     IF node.pred
  7.         IF node.pred.pred=0 THEN RETURN TRUE
  8.     ENDIF
  9. ENDPROC FALSE
  10.  
  11. EXPORT PROC islast(node:PTR TO ln)
  12.     IF node.succ
  13.         IF node.succ.succ=0 THEN RETURN TRUE
  14.     ENDIF
  15. ENDPROC FALSE
  16. EXPORT PROC ishead(node:PTR TO ln) IS IF (node.pred=0) THEN TRUE ELSE FALSE
  17. EXPORT PROC istail(node:PTR TO ln) IS IF (node.succ=0) THEN TRUE ELSE FALSE
  18. EXPORT PROC isempty(list:PTR TO lh) IS IF (list.head.succ=0) THEN TRUE ELSE FALSE
  19.  
  20. EXPORT PROC sortlist(list:PTR TO lh)    -> MUST HAVE AT LEAST 2 NODES
  21.     DEF n1:PTR TO ln
  22.     DEF n2:PTR TO ln
  23.     DEF sorted,order
  24.     IF (list)
  25.         IF (isempty(list)=0)
  26.             IF ((islast(list.head))=0)
  27.                 REPEAT
  28.                     sorted:=FALSE
  29.                     n1:=list.head
  30.                     n2:=n1.succ
  31.                     REPEAT
  32.                         order:=OstrCmp(n1.name,n2.name)
  33.                         IF (order=-1)
  34.                             Remove(n1)
  35.                             Insert(list,n1,n2)
  36.                             sorted:=TRUE
  37.                         ENDIF
  38.                         n1:=n2
  39.                         n2:=n2.succ
  40.                     UNTIL (n2.succ=0)
  41.                 UNTIL (sorted=FALSE)
  42.             ENDIF
  43.         ENDIF
  44.     ENDIF
  45. ENDPROC
  46.